package code

/**
 * 错误码
 */
import (
	"github.com/slclub/go-tips/stringbyte"
	"strconv"
)

type CODENO int

var code_map map[CODENO]string

func (errno CODENO) String() string {
	str, ok := code_map[errno]
	if !ok {
		return strconv.Itoa(int(errno))
	}
	return str
}

func (errno CODENO) Error() string {
	str, _ := code_map[errno]
	return str
}

// 实现io.Reader 接口
func (errno CODENO) Read(p []byte) (n int, err error) {
	np := stringbyte.StringToBytes(errno.String())
	n = copy(p, np)
	return n, nil
}

func init() {
	code_map = make(map[CODENO]string)
	initCode()
}
